#ifndef _NGX_VALUE_H_


class NgxUnsetValue final
{
public:
	template<typename T>
	operator T() const
	{
		return static_cast<T>(-1);
	}

	template<typename T>
	operator T*() const
	{
		return reinterpret_cast<T*>(-1);
	}
public:
	static const NgxUnsetValue& get() 
	{
		static const NgxUnsetValue unset = {};
		return unset;
	}
};


namespace ngx
{
	const auto& ngx_nil = NgxUnsetValue::get();
} // namespace ngx


#endif //!_NGX_VALUE_H_